package com.alioth;

import java.util.Date;

/**
 * @Author tsj
 * @Date 2023/11/14/16:50
 */
public class LocalVariablesTest {



    public LocalVariablesTest(){



    }

    public static void main(String[] args) {
        int i  =10;
        LocalVariablesTest test = new LocalVariablesTest();
        test.test1();
    }

    private void test1() {
        int i = testInt();
        Date date = new Date();
        String name = "tsj.com";
        double d = 120.0;
        char gender = '男';
        System.out.println(gender + d);
        test3(date);


    }

    private String test3(Date date){
        String s = date.toString();

        return "test";
    }


    private int testInt (){
        int a = 10;
        double c = 10.0;
        return a;

    }
    public static  void test2(){

        Date date = new Date();
        char c = '你';
        System.out.println(date);
        //因为this变量不存在当前方法的局部变量表中
        //this.test1();

    }

    public void test4(){
        int a = 0;
        {
            double b = 0;
            b = a + 1;
        }
        // 变量c使用 之前已经销毁的变量b占据的slot的位置
        int c = a + 1;

    }

    /**
     * 变量的分类：按照数据类型分：①技术数据类型 ②引用数据类型
     *
     *          按照类中声明的位置分 ① 成员变量：在使用前都经历过默认初始化赋值
     *                                      -- 类变量：linking的prepare阶段：给类变量默认赋值 ---> initial 阶段，给类变量显示赋值 即静态代码块赋值
     *                                      -- 实例变量：随着对象的创建，会在对空间分配实例变量空间，并进行默认赋值
     *                            ② 局部变量 ：在使用之前，必须进行显示赋值！否则编译不通过
     */


    public void test5temp(){
        int num;
        //System.out.println(num);//显示错误，变量num没进行赋值
    }
}
